package neo.app.action;
import java.util.ArrayList;  
import java.util.List;  
import java.util.Map;  

import javax.servlet.http.HttpServletResponse;

import com.opensymphony.webwork.ServletActionContext;



import jofc2.model.Chart;  
import jofc2.model.axis.Label;  
import jofc2.model.axis.XAxis;  
import jofc2.model.axis.YAxis;  
import jofc2.model.elements.BarChart;
import jofc2.model.elements.LineChart;  
import jofc2.model.elements.PieChart;
import jofc2.model.elements.SketchBarChart;
import jofc2.model.elements.BarChart.Bar;


public class AnalyzeAction extends BaseAction {
	
	 private Chart ofcChart;
	 
	 public Chart getOfcChart() {  
	         return ofcChart;  
	     }
	 public String showCost() throws Exception{
		 return "showcost";
	 }
	 public String showEfficiency() throws Exception{
		 return "showefficiency";
	 }
	 public String showQuality() throws Exception{
		 return "showquality";
	 }
	 public String showCapability() throws Exception{
		 return "showcapability";
	 }
	 public String showCostChart() throws Exception{  
	         //y轴数据集合-使用数量  
	         List<Number> dataSet = new ArrayList<Number>();  
	         //x轴数据集合-浏览器类型  
	         List<Label> xLabel = new ArrayList<Label>();  
	         //获取需要显示的数据集  
	         List browserList = getServMgr().getAnalyzeService().getBrowserStat();  
	         for (int i = 0; i < browserList.size(); i++) {  
	             Map map = (Map) browserList.get(i);  
	             //填充x轴  
	             dataSet.add((Integer) map.get("statCount"));  
	             //填充y轴  
	             xLabel.add(new Label((String) map.get("statVar")));  
	         }  
	         //设置X轴内容  
	         XAxis labels = new XAxis();  
	         labels.addLabels(xLabel);  
	         //设置Y轴显示值域:Range的三个参数含义为：坐标最小值，最大值和步进值  
	         YAxis range = new YAxis();  
	         range.setRange(0, 40, 5);  
//	         //OFC折线图设置  
//	         LineChart lineChart = new LineChart(LineChart.Style.NORMAL);  
//	         lineChart.addValues(dataSet);  
//	         lineChart.setColour("#6666FF");  
//	         lineChart.setText("使用者数量");  
//			 //图表设置  
//	         Chart chart = new Chart("用户浏览器使用量分布");  
//	         chart.setXAxis(labels);  
//	         chart.setYAxis(range);  
//	         chart.addElements(lineChart);
	         
//	         //Sketch型柱状图设置  
//	         SketchBarChart sketchChart = new SketchBarChart();  
//	         sketchChart.setColour("#6666FF");  
//	         sketchChart.addValues(dataSet);  
//	         sketchChart.setText("使用者数量");  
//	         //图表设置  
//	         Chart chart = new Chart("用户浏览器使用量分布");  
//	         chart.setXAxis(labels);  
//	         chart.setYAxis(range);  
//	         chart.addElements(sketchChart);  
	         
	         
//	         //柱状图Bar的集合  
//	         List<Bar> barList=new ArrayList<Bar>();  
//	         for (int i = 0; i < browserList.size(); i++) {  
//	             Map map = (Map) browserList.get(i);  
//	             //填充Bar，并给出提示  
//	             barList.add(new Bar((Integer) map.get("statCount")).setTooltip("#val#次"));  
//	             //填充y轴  
//	             xLabel.add(new Label((String) map.get("statVar")));  
//	         }  
//	         //柱状图设置  
//	         BarChart barChart=new BarChart(BarChart.Style.GLASS);  
//	         barChart.addBars(barList);  
//	         barChart.setColour("#6666FF");  
//	         barChart.setText("使用者数量");  
//	         //图表设置  
//	         Chart chart = new Chart("用户浏览器使用量分布");  
//	         chart.setXAxis(labels);  
//	         chart.setYAxis(range);  
//	         chart.addElements(barChart);  
	         
	          //饼状图  
	          PieChart pieChart = new PieChart();  
	          for (int i = 0; i < browserList.size(); i++) {  
	              Map map = (Map) browserList.get(i);  
	              //填充x轴  
	              dataSet.add((Integer) map.get("statCount"));  
	              //饼状图添加块  
	              pieChart.addSlice((Integer) map.get("statCount"), (String) map.get("statVar"));  
	          }  
	         //饼状图设置  
	         pieChart.setColours("#d01f3c", "#356aa0", "#C79810");  
	         pieChart.setText("使用者数量");  
	         pieChart.setRadius(180); //饼图的半径  
	         pieChart.setTooltip("#val# / #total#<br>#percent#");  
	         //图表设置  
	         Chart chart = new Chart("成本分析");  
	         chart.setXAxis(labels);  
	         chart.setYAxis(range);  
	         chart.addElements(pieChart);  
	        //打印JSON格式的文本  
	       //  System.out.print(chart.toString());  
	         HttpServletResponse response = ServletActionContext.getResponse();  
	         response.setContentType("application/json-rpc;charset=utf-8");  
	         response.setHeader("Cache-Control", "no-cache");  
	         response.setHeader("Expires", "0");  
	         response.setHeader("Pragma", "No-cache");  
	         response.getWriter().write(chart.toString());  
	         return null;  
	     } 
	 
	 public String showEfficiencyChart() throws Exception{  
         //y轴数据集合-使用数量  
         List<Number> dataSet = new ArrayList<Number>();  
         //x轴数据集合-浏览器类型  
         List<Label> xLabel = new ArrayList<Label>();  
         //获取需要显示的数据集  
         List browserList = getServMgr().getAnalyzeService().getBrowserStat();  
         for (int i = 0; i < browserList.size(); i++) {  
             Map map = (Map) browserList.get(i);  
             //填充x轴  
             dataSet.add((Integer) map.get("statCount"));  
             //填充y轴  
             xLabel.add(new Label((String) map.get("statVar")));  
         }  
         //设置X轴内容  
         XAxis labels = new XAxis();  
         labels.addLabels(xLabel);  
         //设置Y轴显示值域:Range的三个参数含义为：坐标最小值，最大值和步进值  
         YAxis range = new YAxis();  
         range.setRange(0, 40, 5);  
         //OFC折线图设置  
         LineChart lineChart = new LineChart(LineChart.Style.NORMAL);  
         lineChart.addValues(dataSet);  
         lineChart.setColour("#6666FF");  
         lineChart.setText("使用者数量");  
		 //图表设置  
         Chart chart = new Chart("效率分析");  
         chart.setXAxis(labels);  
         chart.setYAxis(range);  
         chart.addElements(lineChart);
         
//         //Sketch型柱状图设置  
//         SketchBarChart sketchChart = new SketchBarChart();  
//         sketchChart.setColour("#6666FF");  
//         sketchChart.addValues(dataSet);  
//         sketchChart.setText("使用者数量");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(sketchChart);  
         
         
//         //柱状图Bar的集合  
//         List<Bar> barList=new ArrayList<Bar>();  
//         for (int i = 0; i < browserList.size(); i++) {  
//             Map map = (Map) browserList.get(i);  
//             //填充Bar，并给出提示  
//             barList.add(new Bar((Integer) map.get("statCount")).setTooltip("#val#次"));  
//             //填充y轴  
//             xLabel.add(new Label((String) map.get("statVar")));  
//         }  
//         //柱状图设置  
//         BarChart barChart=new BarChart(BarChart.Style.GLASS);  
//         barChart.addBars(barList);  
//         barChart.setColour("#6666FF");  
//         barChart.setText("使用者数量");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(barChart);  
         
//          //饼状图  
//          PieChart pieChart = new PieChart();  
//          for (int i = 0; i < browserList.size(); i++) {  
//              Map map = (Map) browserList.get(i);  
//              //填充x轴  
//              dataSet.add((Integer) map.get("statCount"));  
//              //饼状图添加块  
//              pieChart.addSlice((Integer) map.get("statCount"), (String) map.get("statVar"));  
//          }  
//         //饼状图设置  
//         pieChart.setColours("#d01f3c", "#356aa0", "#C79810");  
//         pieChart.setText("使用者数量");  
//         pieChart.setRadius(180); //饼图的半径  
//         pieChart.setTooltip("#val# / #total#<br>#percent#");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(pieChart);  
        //打印JSON格式的文本  
       //  System.out.print(chart.toString());  
         HttpServletResponse response = ServletActionContext.getResponse();  
         response.setContentType("application/json-rpc;charset=utf-8");  
         response.setHeader("Cache-Control", "no-cache");  
         response.setHeader("Expires", "0");  
         response.setHeader("Pragma", "No-cache");  
         response.getWriter().write(chart.toString());  
         return null;  
     }
	 
	 public String showQualityChart() throws Exception{  
         //y轴数据集合-使用数量  
         List<Number> dataSet = new ArrayList<Number>();  
         //x轴数据集合-浏览器类型  
         List<Label> xLabel = new ArrayList<Label>();  
         //获取需要显示的数据集  
         List browserList = getServMgr().getAnalyzeService().getBrowserStat();  
         for (int i = 0; i < browserList.size(); i++) {  
             Map map = (Map) browserList.get(i);  
             //填充x轴  
             dataSet.add((Integer) map.get("statCount"));  
             //填充y轴  
             xLabel.add(new Label((String) map.get("statVar")));  
         }  
         //设置X轴内容  
         XAxis labels = new XAxis();  
         labels.addLabels(xLabel);  
         //设置Y轴显示值域:Range的三个参数含义为：坐标最小值，最大值和步进值  
         YAxis range = new YAxis();  
         range.setRange(0, 40, 5);  
//         //OFC折线图设置  
//         LineChart lineChart = new LineChart(LineChart.Style.NORMAL);  
//         lineChart.addValues(dataSet);  
//         lineChart.setColour("#6666FF");  
//         lineChart.setText("使用者数量");  
//		 //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(lineChart);
         
         //Sketch型柱状图设置  
         SketchBarChart sketchChart = new SketchBarChart();  
         sketchChart.setColour("#6666FF");  
         sketchChart.addValues(dataSet);  
         sketchChart.setText("使用者数量");  
         //图表设置  
         Chart chart = new Chart("资量分析");  
         chart.setXAxis(labels);  
         chart.setYAxis(range);  
         chart.addElements(sketchChart);  
         
         
//         //柱状图Bar的集合  
//         List<Bar> barList=new ArrayList<Bar>();  
//         for (int i = 0; i < browserList.size(); i++) {  
//             Map map = (Map) browserList.get(i);  
//             //填充Bar，并给出提示  
//             barList.add(new Bar((Integer) map.get("statCount")).setTooltip("#val#次"));  
//             //填充y轴  
//             xLabel.add(new Label((String) map.get("statVar")));  
//         }  
//         //柱状图设置  
//         BarChart barChart=new BarChart(BarChart.Style.GLASS);  
//         barChart.addBars(barList);  
//         barChart.setColour("#6666FF");  
//         barChart.setText("使用者数量");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(barChart);  
         
//          //饼状图  
//          PieChart pieChart = new PieChart();  
//          for (int i = 0; i < browserList.size(); i++) {  
//              Map map = (Map) browserList.get(i);  
//              //填充x轴  
//              dataSet.add((Integer) map.get("statCount"));  
//              //饼状图添加块  
//              pieChart.addSlice((Integer) map.get("statCount"), (String) map.get("statVar"));  
//          }  
//         //饼状图设置  
//         pieChart.setColours("#d01f3c", "#356aa0", "#C79810");  
//         pieChart.setText("使用者数量");  
//         pieChart.setRadius(180); //饼图的半径  
//         pieChart.setTooltip("#val# / #total#<br>#percent#");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(pieChart);  
        //打印JSON格式的文本  
       //  System.out.print(chart.toString());  
         HttpServletResponse response = ServletActionContext.getResponse();  
         response.setContentType("application/json-rpc;charset=utf-8");  
         response.setHeader("Cache-Control", "no-cache");  
         response.setHeader("Expires", "0");  
         response.setHeader("Pragma", "No-cache");  
         response.getWriter().write(chart.toString());  
         return "";  
     }
	 
	 public String showCapabilityChart() throws Exception{  
         //y轴数据集合-使用数量  
         List<Number> dataSet = new ArrayList<Number>();  
         //x轴数据集合-浏览器类型  
         List<Label> xLabel = new ArrayList<Label>();  
         //获取需要显示的数据集  
         List browserList = getServMgr().getAnalyzeService().getBrowserStat();  
         for (int i = 0; i < browserList.size(); i++) {  
             Map map = (Map) browserList.get(i);  
             //填充x轴  
             dataSet.add((Integer) map.get("statCount"));  
             //填充y轴  
             xLabel.add(new Label((String) map.get("statVar")));  
         }  
         //设置X轴内容  
         XAxis labels = new XAxis();  
         labels.addLabels(xLabel);  
         //设置Y轴显示值域:Range的三个参数含义为：坐标最小值，最大值和步进值  
         YAxis range = new YAxis();  
         range.setRange(0, 40, 5);  
//         //OFC折线图设置  
//         LineChart lineChart = new LineChart(LineChart.Style.NORMAL);  
//         lineChart.addValues(dataSet);  
//         lineChart.setColour("#6666FF");  
//         lineChart.setText("使用者数量");  
//		 //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(lineChart);
         
//         //Sketch型柱状图设置  
//         SketchBarChart sketchChart = new SketchBarChart();  
//         sketchChart.setColour("#6666FF");  
//         sketchChart.addValues(dataSet);  
//         sketchChart.setText("使用者数量");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(sketchChart);  
         
         
         //柱状图Bar的集合  
         List<Bar> barList=new ArrayList<Bar>();  
         for (int i = 0; i < browserList.size(); i++) {  
             Map map = (Map) browserList.get(i);  
             //填充Bar，并给出提示  
             barList.add(new Bar((Integer) map.get("statCount")).setTooltip("#val#次"));  
             //填充y轴  
             xLabel.add(new Label((String) map.get("statVar")));  
         }  
         //柱状图设置  
         BarChart barChart=new BarChart(BarChart.Style.GLASS);  
         barChart.addBars(barList);  
         barChart.setColour("#6666FF");  
         barChart.setText("使用者数量");  
         //图表设置  
         Chart chart = new Chart("能力分析");  
         chart.setXAxis(labels);  
         chart.setYAxis(range);  
         chart.addElements(barChart);  
         
//          //饼状图  
//          PieChart pieChart = new PieChart();  
//          for (int i = 0; i < browserList.size(); i++) {  
//              Map map = (Map) browserList.get(i);  
//              //填充x轴  
//              dataSet.add((Integer) map.get("statCount"));  
//              //饼状图添加块  
//              pieChart.addSlice((Integer) map.get("statCount"), (String) map.get("statVar"));  
//          }  
//         //饼状图设置  
//         pieChart.setColours("#d01f3c", "#356aa0", "#C79810");  
//         pieChart.setText("使用者数量");  
//         pieChart.setRadius(180); //饼图的半径  
//         pieChart.setTooltip("#val# / #total#<br>#percent#");  
//         //图表设置  
//         Chart chart = new Chart("用户浏览器使用量分布");  
//         chart.setXAxis(labels);  
//         chart.setYAxis(range);  
//         chart.addElements(pieChart);  
        //打印JSON格式的文本  
       //  System.out.print(chart.toString());  
         HttpServletResponse response = ServletActionContext.getResponse();  
         response.setContentType("application/json-rpc;charset=utf-8");  
         response.setHeader("Cache-Control", "no-cache");  
         response.setHeader("Expires", "0");  
         response.setHeader("Pragma", "No-cache");  
         response.getWriter().write(chart.toString());  
         return null;  
     }
}  
	

